/**
 * Project Name:Kany-Project
 * File Name:RegexTest.java
 * Package Name:
 * Date:2016-1-28下午05:43:42
 * Copyright (c) 2016, Jason.Wang All Rights Reserved.
 *
 */
package me.kany.utils.common;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * ClassName:RegexTest <br/>
 * Function: 简单的测试. <br/>
 * Date:     2016-1-28 下午05:43:42 <br/>
 * @author   Jason.Wang
 * @version  
 * @since    JDK 1.7
 * @see 	 
 */
public class RegexTest {

	static String abcd = "2016-1-24,\"PAY000000192303	\",\"677824749	\",\"310000067575	\",2016-1-24 10:42,\"1	\",\"15,000.00\",\"01	\",\"	\",,\"Y	\",";
//	static String abcd = "2016-1-24,\"PAY000000192303\",\"677824749\",\"310000067575\",2016-1-24 10:42,\"1\",\"15,000.00\",\"01\",\"\",,\"Y\",";
	
	/**
	 * main:程序启动的主方法. <br/>
	 *
	 * @author Jason.Wang
	 * @param args
	 * @since JDK 1.7
	 * <pre>
	 * 2016年1月28日 18:58:04
	 * 遇到按照","分隔数据时，在数字中包含有","的解决办法
	 * 1、
	 * 2、将数据中有","的先进行处理，然后在去按照split的方式去分组
	 * 3、使用正则表达是去匹配，建议安装工具Regex Util - http://regex-util.sourceforge.net/update/
	 * 注意：使用这样的正则匹配的时候需要注意group(0)为完整的数据，切记
	 * </pre>
	 */
	public static void main(String[] args) {
		/**
		 * 第一种：使用replace方式将正确分隔的字符处理成其他的符号去转换
		 */
//		System.out.println(abcd.trim().replace("\t", ""));
//		abcd = StringUtils.replace(abcd, ",,", ",\" \",");
//		abcd = StringUtils.replace(abcd, ",\"", "|\"");
//		abcd = StringUtils.replace(abcd, "\",", "\"|");
//		String[] an = StringUtils.split(abcd, "|\"");
//		for (String string : an) {
//			System.out.println("====" + string);
//		}
//		System.out.println("结束");
		
		/**
		 * 第二种：先处理掉里面有“,”的数字
		 */
//		Pattern pattern = Pattern.compile("(\\d+,?\\d+\\.\\d+)");
//		Matcher matcher = pattern.matcher(abcd);
//		if(matcher.find()){
//			String temp = (matcher.group());
//			abcd = abcd.replace(temp, temp.replace(",", ""));
//		}
//		System.out.println(abcd.replace("\t", ""));
		
		/**
		 * 使用正则表达式处理
		 * 1、完整匹配法
		 */
//		Pattern pattern = Pattern.compile("([0-9\\-]+),\"([A-Z0-9]+)\\t+?\",\"([0-9]+)\\t?\",\"([0-9]+)\\t?\",([0-9\\s\\-:]+),\"([0-9]+)\\t?\",\"([0-9,\\.]+)\",\"([0-9]+)\\t?\",\"(\\s+)\",(.*)?,\"([A-Z]+)\\t\"");
//		Matcher matcher = pattern.matcher(abcd);
//		if (matcher.find()) {
//			System.out.println(matcher.groupCount());
//			for (int i = 1; i < 12; i++) {
//				System.out.println(matcher.group(i));
//			}
//		}
		
		/**
		 * 使用正则表达式处理
		 * 2、非匹配法
		 */
		Pattern pattern = Pattern.compile("(\\\"[^\\\"]+\\\")|([^,]*)");
		Matcher matcher = pattern.matcher(abcd);
		int start = 0;
		while (matcher.find(start) && !matcher.hitEnd()) {
			start = matcher.end() + 1;
			System.out.println(matcher.group());
		}
	}
}
